Platform Explorer / Nuxeo Platform 2023.20

Component org.nuxeo.ecm.platform.video.tools.commandlines

Requirements

Resolution Order

599
The resolution order represents the order in which this component has been resolved by the Nuxeo Runtime framework.
You can influence this order by adding "require" tags in your component declaration, to make sure it is resolved after another component.

Contributions

XML Source

<component name="org.nuxeo.ecm.platform.video.tools.commandlines">

  <require>org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib</require>

  <extension
      target="org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent"
      point="command">

    <command name="videoClosedCaptionsExtractor" enabled="true">
      <commandLine>ccextractor</commandLine>
      <parameterString>#{sourceFilePath} -out=#{outFormat} -trim -o #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ccextractor.</installationDirective>
    </command>

    <command name="videoPartClosedCaptionsExtractor" enabled="true">
      <commandLine>ccextractor</commandLine>
      <parameterString>#{sourceFilePath} -out=#{outFormat} -startat #{startAt} -endat #{endAt} -trim -o #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ccextractor.</installationDirective>
    </command>

    <command name="videoConcat" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -f concat -safe 0 -i #{listFilePath} -c copy #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- This one is very fast, but you may miss frames. Use it when you are sure you'll get the correct cut -->
    <command name="videoSlicerByCopy" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} -c copy #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- This on is the basic slicing. It re-encodes the video, so it it is slower than videoSlicerCopy -->
    <command name="videoSlicer" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- This enables video slicing starting from the specific time -->
    <command name="videoSlicerStartAt" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} #{outFilePath}</parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- Slices in n segment of #duration each. outFilePath is an expression
         (OUT%03d.mp4 for example) so ffmpeg creates one file/segment -->
    <command name="videoSlicerSegments" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -map 0 -c copy -f segment -segment_time #{duration} -reset_timestamps 1
        #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

    <!-- filterComplex is the full filter. For example: "overlay=10:10" -->
    <command name="videoWatermarkWithPicture" enabled="true">
      <commandLine>ffmpeg</commandLine>
      <parameterString>-y -i #{sourceFilePath} -i #{pictureFilePath} -filter_complex #{filterComplex} #{outFilePath}
      </parameterString>
      <installationDirective>You need to install ffmpeg.</installationDirective>
    </command>

  </extension>

</component>